﻿using Seg.Entidades;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Seg.Datos
{
    public class PerfilUsuarioOficinaDatos
    {
        BD_SEGEntities context = new BD_SEGEntities();

        public PerfilUsuarioOficina obtenerPerfilUsuarioOficinaXCodPerf(int CodigoPerfilUsuario)
        {
            var datos = context.PerfilUsuarioOficina.Where(x =>
                (x.CodigoPerdilUsuario == CodigoPerfilUsuario)
                ).FirstOrDefault();
            return datos;
        }
        public PerfilUsuarioOficina obtenerPerfilUsuarioOficinaXCod(int CodigoUsuarioOficina)
        {
            var datos = new Seg.Entidades.PerfilUsuarioOficina();
            datos = context.PerfilUsuarioOficina.Where(x =>
                (x.CodigoUsuarioOficina == CodigoUsuarioOficina)
                && (x.Anulado == false)
                ).FirstOrDefault();
            return datos;
        }
        public List<PerfilUsuarioOficina> ListarPerfilUsuarioOficinaXCod(int CodigoUsuarioOficina)
        {
            var datos = new List<Seg.Entidades.PerfilUsuarioOficina>();
            datos = context.PerfilUsuarioOficina.Where(x =>
                (x.CodigoUsuarioOficina == CodigoUsuarioOficina)
                && (x.Anulado == false)
                ).ToList();
            return datos;
        }
        public List<PerfilUsuarioOficina> ListarPerfilUsuarioOfiXPerfil(int CodigoPerfil)
        {
            var datos = new List<Seg.Entidades.PerfilUsuarioOficina>();
            datos = context.PerfilUsuarioOficina.Where(x =>
                (x.CodigoPerfil == CodigoPerfil)
                && (x.Anulado == false)
                ).ToList();
            return datos;
        }

        public int Eliminar(PerfilUsuarioOficina entidad)
        {
            var obj = context.PerfilUsuarioOficina.Where(x =>
                (x.CodigoPerdilUsuario == entidad.CodigoPerdilUsuario)).FirstOrDefault();

            obj.Anulado = obj.Anulado==false ? true : false;
            var r = context.SaveChanges();
            return r;
        }

        public int Insertar(PerfilUsuarioOficina entidad)
        {
            entidad.CodigoPerdilUsuario = GenerarCodigo();
            context.PerfilUsuarioOficina.Add(entidad);
            var r = context.SaveChanges();

            return r == 0 ? r : entidad.CodigoPerdilUsuario;
        }

        int GenerarCodigo()
        {
            var actual = context.PerfilUsuarioOficina.Max(x => x.CodigoPerdilUsuario);
            return actual + 1;
        }
        public List<SEGSS_CONSULTAR_PERFILUSUARIO_Result> ListarPerfilUsuario(int CodigoSistema, int CodigoPerfil, int CodigoOficina, string Nombre, string Anulado)
        {
            var anul = 0;
            if (Anulado == "0")
            {
                anul = 2;
            }
            else
            {
                anul = Anulado == "A" ? 0 : 1;
            }

            var datos = context.SEGSS_CONSULTAR_PERFILUSUARIO(CodigoSistema, CodigoPerfil, CodigoOficina, anul, Nombre).ToList();

            return datos;
        }
    }
}
